package com.ow.dva.module.version.controller;


import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.stereotype.Controller;
import com.ow.dva.module.base.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import com.ow.dva.module.version.entity.Version;
import com.ow.dva.module.version.service.VersionService;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.web.bind.annotation.*;
import com.ow.dva.module.base.entity.json.RT;
import org.springframework.ui.Model;
import javax.annotation.Resource;
import com.ow.dva.module.base.entity.param.DvaPage;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


/**
 * <p>
 * 版本更新（路侧App） 前端控制器
 * </p>
 *
 * @author YanZengBao
 * @since 2020-04-20
 * @version V1.0
 */
@Controller
@Api(tags = "版本更新（路侧App） 相关控制器")
@RequestMapping("/version")
public class VersionController extends BaseController {

    /**
    * 分页获取版本更新（路侧App）数据列表信息
    * 创建时间：2020-04-20 YanZengBao
    * 修改时间：2020-04-20 YanZengBao 加注释
    * 修改时间：
    */
    @ApiOperation(value = "分页获取",notes = "批量获取版本更新（路侧App）信息列表，分页，可携带条件")
    @RequiresPermissions("version:page")
    @GetMapping(value = "/page")
    public String page(DvaPage<Version> dvaPage, @RequestParam Map<String, Object> param, Model model){

        DvaPage<Version> page = versionService.page(dvaPage,param);
        model.addAttribute("page",page);
        model.addAttribute("param",param);
        return "version/list";
    }

    /**
    * 进入版本更新（路侧App）添加页面。
    * 创建时间：2020-04-20 YanZengBao
    * 修改时间：2020-04-20 YanZengBao 加注释
    * 修改时间：
    */
    @ApiOperation(value = "进入添加页面",notes = "进入版本更新（路侧App）添加页面")
    @RequiresPermissions("version:add")
    @GetMapping(value = "/add")
    public String add(){

        return "version/add";
    }

    /**
    * 添加版本更新（路侧App）信息。
    * 创建时间：2020-04-20 YanZengBao
    * 修改时间：2020-04-20 YanZengBao 加注释
    * 修改时间：
    */
    @ApiOperation(value = "添加",notes = "添加单个版本更新（路侧App）信息")
    @RequiresPermissions("version:add")
    @PostMapping("/save")
    @ResponseBody
    public RT save(Version version){
        Map map = new HashMap();
        map.put("code",version.getCode());
        int code = versionService.count(map);
        if(code > 0) return RT.error(1,"版本号已存在！");
        version.setCreateTime(new Date());
        return versionService.save(version) ? RT.ok() : RT.error(RT.ERROR_0101);
    }

    /**
    * 进入版本更新（路侧App）编辑页面。
    * 创建时间：2020-04-20 YanZengBao
    * 修改时间：2020-04-20 YanZengBao 加注释
    * 修改时间：
    */
    @ApiOperation(value = "进入编辑页面",notes = "进入版本更新（路侧App）编辑页面")
    @RequiresPermissions("version:edit")
    @GetMapping(value = "/edit")
    public String edit(String id,Model model){

        model.addAttribute("data",versionService.getById(id));

        return "version/edit";
    }

    /**
    * 修改版本更新（路侧App）信息。
    * 创建时间：2020-04-20 YanZengBao
    * 修改时间：2020-04-20 YanZengBao 加注释
    * 修改时间：
    */
    @ApiOperation(value = "修改",notes = "修改单个版本更新（路侧App）信息")
    @RequiresPermissions("version:edit")
    @PostMapping("/update")
    @ResponseBody
    public RT update(Version version){

        return versionService.updateById(version) ? RT.ok() : RT.error(1);
    }

    /**
    * 删除单个版本更新（路侧App）信息。
    * 创建时间：2020-04-20 YanZengBao
    * 修改时间：2020-04-20 YanZengBao 加注释
    * 修改时间：
    */
    @ApiOperation(value = "删除",notes = "删除单个版本更新（路侧App）信息")
    @RequiresPermissions("version:delete")
    @PostMapping("/delete")
    @ResponseBody
    public RT delete(@ApiParam(name="要删除的版本更新（路侧App）ID") String id){

        return versionService.removeById(id) ? RT.ok() : RT.error(1);
    }

    /**
    * 批量删除多个版本更新（路侧App）信息。
    * 创建时间：2020-04-20 YanZengBao
    * 修改时间：2020-04-20 YanZengBao 加注释
    * 修改时间：
    */
    @ApiOperation(value = "批量删除",notes = "批量删除多个版本更新（路侧App）信息")
    @RequiresPermissions("version:delete")
    @PostMapping("/deleteByIds")
    @ResponseBody
    public RT deleteByIds(@ApiParam(name="要删除的版本更新（路侧App）ID List") @RequestParam List<String> ids){

        return versionService.removeByIds(ids) ? RT.ok() : RT.error(1);
    }


    /**
     * 描述： 上传文件
     * 创建时间：2020/4/21  YanZengBao
     * 修改时间：2020/4/21  YanZengBao 加注释
     * 修改时间：
     */
    @ApiOperation(value = "上传文件",notes = "表单提交")
    @PostMapping(value = "/upload")
    @ResponseBody
    public RT imageUpload(MultipartFile file){
        if(file != null && !file.isEmpty()){
            try {
                String filePath = versionService.fileUpload(file);
                return RT.ok("上传成功!",filePath);
            } catch (IOException e) {
                //e.printStackTrace();
                logger.error("文件上传失败：" + e.getMessage());
                return RT.error(RT.ERROR_0101,"上传失败!");
            }
        }else{
            return RT.error(RT.ERROR_0102,"没有选择上传文件!");
        }
    }


    @Resource
    VersionService versionService;
}
